var fs= require('fs');
 // 读取
fs.readFileSync('test.json', function (err, data) {
    if (err) {
        return console.error(err);
    }
    var handleData = JSON.parse(data);
    handleData.users[0].age = 21;
    //写入
    fs.writeFileSync('test.json',JSON.stringify(handleData));
    console.log('文件写入结束');

 });




//  fs.read()读取文件数据
//  fs.readFile()读取文件内容

//  // 同步读取
// var data = fs.readFileSync('input.txt');
// console.log("同步读取: " + data.toString());

// console.log("程序执行完毕。");


// //写入文件
// console.log("准备写入文件");
// fs.writeFile('input.txt', '我是通过写入的文件内容！',  function(err) {
//    if (err) {
//        return console.error(err);
//    }
//    console.log("数据写入成功！");
//    console.log("--------我是分割线-------------")
//    console.log("读取写入的数据！");
//    fs.readFile('input.txt', function (err, data) {
//       if (err) {
//          return console.error(err);
//       }
//       console.log("异步读取文件数据: " + data.toString());
//    });
// });


// // 异步打开文件
// console.log("准备打开文件！");
// fs.open('input.txt', 'r+', function(err, fd) {
//    if (err) {
//        return console.error(err);
//    }
//   console.log("文件打开成功！");     
// });

// //检测文件类型
// console.log("准备打开文件！");
// fs.stat('input.txt', function (err, stats) {
//    if (err) {
//        return console.error(err);
//    }
//    console.log(stats);
//    console.log("读取文件信息成功！");
   
//    // 检测文件类型
//    console.log("是否为文件(isFile) ? " + stats.isFile());
//    console.log("是否为目录(isDirectory) ? " + stats.isDirectory());    
// });

// //读取文件
// var buf = new Buffer(1024);
// console.log("准备打开文件！");
// fs.open('input.txt', 'r+', function(err, fd) {
//    if (err) {
//        return console.error(err);
//    }
//    console.log("文件打开成功！");
//    console.log("准备读取文件！");
//    fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
//       if (err){
//          console.log(err);
//       }

//       // 仅输出读取的字节
//       if(bytes > 0){
//          console.log(buf.slice(0, bytes).toString());
//       }

//       // 关闭文件
//       fs.close(fd, function(err){
//          if (err){
//             console.log(err);
//          } 
//          console.log("文件关闭成功");
//       });
//    });
// });

////读取文件2
// 首先要用fs.stat或fs.fstat判断文件的大小，然后使用fs.open()创建文件描述符，最后再使用fs.read()方法读取文件内容。
// fs.stat('/etc/passwd', function(err, stat) {
//     if(stat&&stat.isFile()){
// 	fs.open('/etc/passwd', 'r', function(err, fd){
// 	    //创建一个与文件大小相同的缓冲区
// 	    var readBuffer = new Buffer(stat.size);
// 	    var len = stat.size;
// 	    var offset = 0;
// 	    var filePostion = 0;
// 	    fs.read(fd, readBuffer, offset, len, filePostion, function(err, readByte, readResult){
// 	        //文件内容
//                 console.log(readResult.toString());
//             });
// 	});
//      }
// })

// //删除文件
// console.log("准备删除文件！");
// fs.unlink('input.txt', function(err) {
//    if (err) {
//        return console.error(err);
//    }
//    console.log("文件删除成功！");
// });

// //创建目录
// console.log("创建目录 /tmp/test/");
// fs.mkdir("/tmp/test/",function(err){
//    if (err) {
//        return console.error(err);
//    }
//    console.log("目录创建成功。");
// });

// //读取目录
// console.log("查看 /tmp 目录");
// fs.readdir("/tmp/",function(err, files){
//    if (err) {
//        return console.error(err);
//    }
//    files.forEach( function (file){
//        console.log( file );
//    });
// });

// //删除目录
// // 执行前创建一个空的 /tmp/test 目录
// console.log("准备删除目录 /tmp/test");
// fs.rmdir("/tmp/test",function(err){
//    if (err) {
//        return console.error(err);
//    }
//    console.log("读取 /tmp 目录");
//    fs.readdir("/tmp/",function(err, files){
//       if (err) {
//           return console.error(err);
//       }
//       files.forEach( function (file){
//           console.log( file );
//       });
//    });
// });